//package me.firstapp.service.weixin.huafei.impl;
//
//import java.util.Date;
//import java.util.List;
//import java.util.Map;
//
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.stereotype.Service;
//
//import me.firstapp.common.exception.ServiceException;
//import me.firstapp.common.exception.StatusHouse;
//import me.firstapp.common.utils.DateUtils;
//import me.firstapp.common.utils.Page;
//import me.firstapp.common.utils.StrUtils;
//import me.firstapp.module.weixin.huafei.MobileFare;
//import me.firstapp.module.weixin.member.Member;
//import me.firstapp.module.weixin.member.PaymentRecord;
//import me.firstapp.module.weixin.order.MobileFareOrder;
//import me.firstapp.module.weixin.system.ThisSystem;
//import me.firstapp.repository.weixin.MemberRepository;
//import me.firstapp.repository.weixin.MobileFareOrderRepository;
//import me.firstapp.repository.weixin.MobileFareRepository;
//import me.firstapp.repository.weixin.PaymentRecordRepository;
//import me.firstapp.repository.weixin.ThisSystemRepository;
//import me.firstapp.service.weixin.huafei.MobileFareOrderService;
//
//@Service
//public class MobileFareOrderServiceImpl implements MobileFareOrderService {
//
//	@Autowired
//	private MobileFareRepository mobileFareRepository;
//
//	@Autowired
//	private MobileFareOrderRepository mobileFareOrderRepository;
//
//	@Autowired
//	private MemberRepository memberRepository;
//
//	@Autowired
//	private PaymentRecordRepository paymentRecordRepository;
//
//	@Autowired
//	private ThisSystemRepository thisSystemRepository;
//
//	@Override
//	public MobileFareOrder executeCreateMobileFareOrder(String openId, String name, Long mobileFareId, String remark) {
//		Member member = memberRepository.findMemberByOpenId(openId);
//		if (null == member) {
//			throw new ServiceException(StatusHouse.STATUS_MEMBER_NOT_EXIST);
//		}
//		MobileFare mobileFare = mobileFareRepository.findByName(name);
//		if (null == mobileFare) {
//			throw new ServiceException(StatusHouse.STATUS_PRODUCT_NOT_EXIST);
//		}
//		if (MobileFare.STATUS_OFF == mobileFare.getStatus()) {
//			throw new ServiceException(StatusHouse.STATUS_PRODUCT_OFF_ERROR);
//		}
//		ThisSystem thisSystem = thisSystemRepository.findThisSystem();
//		member.setFlow(member.getFlow() + 1);
//		memberRepository.update(member);
//		MobileFareOrder mobileFareOrder = new MobileFareOrder();
//		String orderNoStart = MobileFareOrder.ORDER_NO_START + DateUtils.getNowStr("yyMMdd") + member.getId();
//		String orderNoEnd = String.valueOf(member.getFlow());
//		int lenth = thisSystem.getOrderNoLength() - orderNoStart.length() - orderNoEnd.length();
//		StringBuffer sb = new StringBuffer("");
//		for (int i = 0; i < lenth; i++) {
//			sb.append(String.valueOf(StrUtils.getRandomInt()));
//		}
//		mobileFareOrder.setOrderNo(orderNoStart + sb.toString() + orderNoEnd);
//		mobileFareOrder.setOpenId(openId);
//		mobileFareOrder.setCardNo(member.getCardNo());
//		mobileFareOrder.setChiefOpenId(member.getChiefOpenId());
//		mobileFareOrder.setChiefCardNo(member.getChiefCardNo());
//		mobileFareOrder.setMobileFareId(mobileFare.getId());
//		mobileFareOrder.setName(name);
//		mobileFareOrder.setValue(mobileFare.getValue());
//		mobileFareOrder.setAmount(mobileFare.getPrice());
//		mobileFareOrder.setPayAmount(mobileFare.getPrice());
//		mobileFareOrder.setStatus(MobileFareOrder.STATUS_NOT_PAY);
//		mobileFareOrder.setCreateTime(new Date());
//		mobileFareOrder.setRemark(remark);
//		mobileFareOrderRepository.save(mobileFareOrder);
//		return mobileFareOrder;
//	}
//
//	@Override
//	public Page<MobileFareOrder> findMobileFareOrderPageByOpenId(Integer pageNo, Integer pageSize, String openId) {
//		return mobileFareOrderRepository.findMobileFareOrderPageByOpenId(pageNo, pageSize, openId);
//	}
//
//	@Override
//	public MobileFareOrder findMobileFareOrder(String openId, String orderNo) {
//		return mobileFareOrderRepository.findMobileFareOrder(openId, orderNo);
//	}
//
//	@Override
//	public Long findTotalOrderCounts(String chiefOpenId) {
//		return mobileFareOrderRepository.findTotalOrderCounts(chiefOpenId);
//	}
//
//	@Override
//	public Page<MobileFareOrder> findMobileFareOrderPageByChiefOpenId(Integer pageNo, Integer pageSize,
//			String chiefOpenId) {
//		return mobileFareOrderRepository.findMobileFareOrderPageByChiefOpenId(pageNo, pageSize, chiefOpenId);
//	}
//
//	@Override
//	public Long findOrdersCounts(Integer status, Integer giveFareStatus) {
//		return mobileFareOrderRepository.findOrdersCounts(status, giveFareStatus);
//	}
//
//	@Override
//	public List<MobileFareOrder> findOrders(Integer status) {
//		return mobileFareOrderRepository.findOrders(status);
//	}
//
//	@Override
//	public Page<MobileFareOrder> findMobileFareOrderPage(Integer pageNo, Integer pageSize,
//			Map<String, Object> searchParams, String sortParam, String sortType, Date startTime, Date endTime) {
//		return mobileFareOrderRepository.findMobileFareOrderPage(pageNo, pageSize, searchParams, sortParam, sortType,
//				startTime, endTime);
//	}
//
//	@Override
//	public void executeConfirmOrder(MobileFareOrder mobileFareOrder) {
//		if (null == mobileFareOrder) {
//			return;
//		}
//		mobileFareOrder.setStatus(MobileFareOrder.STATUS_PAYED);
//		mobileFareOrder.setAccountDate(new Date());
//		mobileFareOrderRepository.update(mobileFareOrder);
//	}
//
//	@Override
//	public void executeSavePaymentRecord(MobileFareOrder mobileFareOrder, String thirdPayNo, Integer status,
//			String errorCode, String errorDesc) {
//		if (mobileFareOrder == null) {
//			return;
//		}
//		PaymentRecord paymentRecord = new PaymentRecord();
//		paymentRecord.setOrderNo(mobileFareOrder.getOrderNo());
//		paymentRecord.setOpenId(mobileFareOrder.getOpenId());
//		paymentRecord.setCardNo(mobileFareOrder.getCardNo());
//		paymentRecord.setThirdPayNo(thirdPayNo);
//		paymentRecord.setPayAmount(mobileFareOrder.getPayAmount());
//		paymentRecord.setStatus(status);
//		paymentRecord.setPayTime(new Date());
//		paymentRecord.setErrorCode(errorCode);
//		paymentRecord.setErrorDesc(errorDesc);
//		paymentRecordRepository.save(paymentRecord);
//	}
//
//	@Override
//	public MobileFareOrder executeUpdate(MobileFareOrder mobileFareOrder) {
//		mobileFareOrderRepository.update(mobileFareOrder);
//		return mobileFareOrder;
//	}
//
//	@Override
//	public List<MobileFareOrder> findOrders(Integer status, Integer settleFlag) {
//		return mobileFareOrderRepository.findOrders(status, settleFlag);
//	}
//
//	@Override
//	public MobileFareOrder executeCompleteOrder(MobileFareOrder mobileFareOrder) {
//		return mobileFareOrder;
//	}
//
//}
